A conventional method of automatically generating a source code uses a source code template (see, for example, Japanese Laid-Open Patent Publication No. 2008-052356).
Once an intellectual property (IP) model is developed, derived models and source codes are often prepared based on the IP model and utilizing the source code thereof. Thus, slightly different source codes are generated. The generated source codes are further utilized repeatedly and are branched over and over again. The source codes and the specifications for a model under such circumstances are managed according to type, a relatively large unit by which to manage. This leads to a problem in that the readability of the source codes diminishes and the source codes become un-reusable.
With respect to verification of the developed source code, if the source code is changed partially, the verification is typically partial. However, if the change is undertaken by a different developer, a problem arises in that since the entire source code cannot be checked, verification is insufficient, resulting in the development of model having a bug, which is propagated to the next generation.
Under such circumstances, with the method described above, a problem further arises in that since the template has to assimilate all types, the template code increases explosively by type and the readability of the source code becomes impaired from the beginning.
In ESL model development, optimum abstraction of the model to be developed is determined according to the function to be implemented. The word “optimum” as used herein refers to accuracy and execution speed demanded of the model. The implementation of a model of higher accuracy is more detailed and the implementation of a model of lower accuracy more simplified. A behavior that implements or is implemented by an interface has code dependent on the interface.
An interface suitable for the abstraction, an interface specialized for a target, an interface specialized for a tool, are implemented. A standard interface may be adopted under certain circumstances but the internal structure of the model is implementation-dependent. For this reason, code may not be used commonly between different models or different abstractions. In particular, between a model incorporating a time concept and a model without a time concept, the difference in the interface and the structure is conspicuous and is a significant problem in reducing the man-hours involved in model development.